package com.xmu.prcs.service;

import java.util.List;

import com.xmu.prcs.action.bean.PostBean;
import com.xmu.prcs.action.bean.TopicBean;
import com.xmu.prcs.action.bean.UserInfoBean;
import com.xmu.prcs.action.bean.UserReplyBean;
import com.xmu.prcs.util.PageBean;
import com.xmu.prcs.util.ResultBean;

/**
 * 论坛管理
 * @author frequent
 * @version 1.0,2012-3-20
 *
 */
public interface ForumManager {

	/**
	 * 按分页效果得到话题列表
	 * @param page
	 * @return
	 */
	public ResultBean getTopic4Page(PageBean page);
	
	/**
	 * 得到所有的话题列表
	 * @return
	 */
	public List<TopicBean> getAllTopic();
	
	/**
	 * 通过Id得到话题
	 * @param topicId
	 * @return
	 */
	public TopicBean getTopicById(int topicId);
	
	/**
	 * 判断话题名是否在系统在存在
	 * @param topicName
	 * @return
	 */
	public boolean isTopicNameExist(String topicName);
	
	/**
	 * 增加话题
	 * @param bean
	 * @return
	 */
	public boolean addTopic(TopicBean bean, List<String> chargePerson);
	
	/**
	 * 修改话题
	 * @param bean
	 * @return
	 */
	public boolean modifyTopic(TopicBean bean, List<String> chargePerson);
	
	/**
	 * 得到某个帖子的版主
	 * @param topicId
	 * @return
	 */
	public List<UserInfoBean> getChargePersonOfTopic(int topicId);
	
	/**
	 * 删除某个帖子
	 * @param topicId
	 * @return
	 */
	public boolean deleteTopic(int topicId);
	
	/**
	 * 按分页效果得到帖子列表
	 * @param page
	 * @return
	 */
	public ResultBean getPost4Page(PageBean page, int topicId, int userId);
	
	/**
	 * 增加帖子
	 * @param postBean
	 * @param topicId
	 * @param userId
	 * @return
	 */
	public boolean addPost(PostBean postBean, int topicId, int userId);
	
	/**
	 * 删除帖子
	 * @param postId
	 * @return
	 */
	public boolean deletePost(int postId, int topicId);
	
	/**
	 * 验证帖子名是否唯一性
	 * @param name
	 * @return
	 */
	public boolean isPostNameExist(String name);
	
	/**
	 * 通过Id得到帖子
	 * @param postId
	 * @return
	 */
	public PostBean getPostById(int postId);
	
	/**
	 * 修改帖子
	 * @param bean
	 * @return
	 */
	public boolean modifyPost(PostBean bean);
	
	/**
	 * 按分页效果得到某个帖子下的回复列表
	 * @param postId
	 * @param page
	 * @return
	 */
	public ResultBean showReplysOfPost(int postId, PageBean page, int userId);
	
	/**
	 * 增加帖子下的回复
	 * @param postId
	 * @param userReply
	 * @return
	 */
	public boolean addReply2Post(int postId, UserReplyBean userReply, int userId, int replyTo);
	
	/**
	 * 删除回复
	 * @param postId
	 * @param replyId
	 * @return
	 */
	public boolean deleteReply(int postId, int replyId);
	
	/**
	 * 统计帖子数
	 * @param postId
	 * @return
	 */
	public int countReply(int postId);
	
	/**
	 * 判断用户是否是话题的版主
	 * @param topicId
	 * @return
	 */
	public int isChargePerson(int topicId, int userId);
}
